Containers are now being used as a more efficient alternative to OS-level virtualization. A large proportion of containers run in virtual machines (VMs). Multiple containers in a single VM may have their own IP interfaces, MAC and IP addresses.
Different containers may require different networking policies and services such as firewall, access control lists (ACLs), quality of service (QoS), etc. Furthermore, different containers running on the same VM may belong to different logical networks and subnets. In addition to containers, there can be multiple application instances in a single VM, each with its own IP interface. Utilizing these containers and applications in VMs requires efficient ways to forward traffic, provide network services, and implement network virtualization.